﻿#define _CRT_SECURE_NO_WARNINGS 1

////联合体 --- 联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫：共⽤体
//#include<stdio.h>
////联合体类型的声明
//union un
//{
//	char c;
//	int i;
//};
//
//int main()
//{
//	//联合体变量的定义
//	union un u = { 0 };
//
//	//计算联合体变量的大小
//	printf("%d\n", sizeof(u));
//
//	return 0;
//}

//联合体的特点 --- 联合的成员是共⽤同⼀块内存空间的，这样⼀个联合变量的⼤⼩，⾄少是最⼤成员的⼤⼩（因为联合
//⾄少得有能⼒保存最⼤的那个成员）


////代码1
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	// 下⾯输出的结果是⼀样的吗？
//	printf("%p\n", &(un.i));
//	printf("%p\n", &(un.c));
//	printf("%p\n", &un);
//	return 0;
//}


////代码2
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	un.i = 0x11223344;
//	un.c = 0x55;
//	printf("%x\n", un.i);
//	return 0;
//}




//联合体⼤⼩的计算
//• 联合的⼤⼩⾄少是最⼤成员的⼤⼩。
//• 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候，就要对⻬到最⼤对⻬数的整数倍。

//#include <stdio.h>
//union Un1
//{
//	char c[5];
//	int i;
//};
//
//union Un2
//{
//	short c[7];//14 1 8 1
//	int i;// 4 8 4
//};
//
//int main()
//{
//	//下⾯输出的结果是什么？
//	printf("%d\n", sizeof(union Un1));// 8
//	printf("%d\n", sizeof(union Un2));// 16 
//	return 0;
//}



//联合体的使用
//我们要搞⼀个活动，要上线⼀个礼品兑换单，礼品兑换单中有三种商品：图书、杯⼦、衬衫。
//每⼀种商品都有：库存量、价格、商品类型和商品类型相关的其他信息
//struct gift_list
//{
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//
//	union {
//		struct
//		{
//			char title[20];//书名
//			char author[20];//作者
//			int num_pages;//⻚数
//		}book;
//		struct
//		{
//			char design[30];//设计
//		}mug;
//		struct
//		{
//			char design[30];//设计
//			int colors;//颜⾊
//			int sizes;//尺⼨
//		}shirt;
//	}item;
//};


//联合的⼀个练习 --- 写⼀个程序，判断当前机器是⼤端？还是⼩端？
//#include<stdio.h>
//int check_sys()
//{
//	union un
//	{
//		int i;
//		char c;
//	}u;
//	u.i = 1;
//
//	return u.c;
//}
//int main()
//{
//	int ret = check_sys();
//	if (1 == ret)
//		printf("小端\n");
//	else
//		printf("大端\n");
//
//	return 0;
//}


//枚举类型

#include<stdio.h>

enum Color
{
	RED,
	GREEN,
	BLUE= 5
};

enum Sex
{
	MALE,
	FEMALE,
	SECRET
};

int main()
{
	enum Color color = RED;
	printf("%d\n", RED);
	printf("%d\n", GREEN);
	printf("%d\n", BLUE);

	return 0;
}










